
package net.sea.commons.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * EL表达式工具类
 *
 * @author huachengwu 
 */
public class ELUtils {
	/**
	 * 
	 * EL表达式对象
	 *
	 * @author huachengwu 
	 */
	public static class EL {
		// 变量名称
		private String varName;
		// EL表达式
		private String elExp;

		public String getVarName() {
			return varName;
		}

		public void setVarName(String varName) {
			this.varName = varName;
		}

		public String getElExp() {
			return elExp;
		}

		public void setElExp(String elExp) {
			this.elExp = elExp;
		}
	}

	/**
	 * 获取EL表达式中的变量名
	 * 
	 * @param str
	 *            包含EL表达式的字符串
	 * @return EL表达式列表
	 */
	public static List<EL> getVarName(String str) {
		Pattern pattern = Pattern
				.compile("(\\$\\{([_a-zA-Z][_a-zA-Z0-9]*)\\})");
		Matcher m = pattern.matcher(str);
		List<EL> list = new ArrayList<ELUtils.EL>();
		while (m.find()) {
			EL el = new EL();
			el.setElExp(m.group(1));
			el.setVarName(m.group(2));
			list.add(el);
		}
		return list;
	}
}

/*
 * 修改历史 $Log$
 */